package com.imarkket.Library;

import android.content.Context;

import com.imarkket.R;

import org.apache.http.NameValuePair;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;

/**
 * Created by Sistemas on 23/05/2014.
 */
public class c_JSON {

    private static c_JSON instance = new c_JSON();
    static Context context;

    public static c_JSON getInstance(Context ctx) {
        context = ctx;
        return instance;
    }

    // Determinamos el tipo de conexion
    // uso: JSONObject json_send =
    // AppJSON.getInstance(this.context).createJSON();
    public JSONObject createJSON(ArrayList<NameValuePair> ArrayOperation, Context ctx, int ID_APP) {

        // Recorrer el array de operacion que nos ofrece que tipo de operaci�n
        // se ha hecho y que parametros se pasan
        /*
		 * String OPERATION = null; String USERNAME = null; String PASSWORD = null; for (NameValuePair element : ArrayOperation) { // foreach loop if
		 * (element.getName().equals("op")) OPERATION = element.getValue().toString(); if (element.getName().equals("us")) USERNAME = element.getValue().toString(); if
		 * (element.getName().equals("ps")) PASSWORD = element.getValue().toString(); }
		 */
        // Objeto base
        JSONObject json = new JSONObject();

        // Creación del objeto json info_device
        try {
            // Objeto hijo
            JSONObject json_device = new JSONObject();

            // Datos del objeto hijo
            json_device.put("VERSION_RELEASE", android.os.Build.VERSION.RELEASE);
            json_device.put("VERSION_SDK", android.os.Build.VERSION.SDK_INT);
            json_device.put("VERSION_INCREMENTAL", android.os.Build.VERSION.INCREMENTAL);
            json_device.put("DEVICE", android.os.Build.DEVICE);
            json_device.put("MODEL", android.os.Build.MODEL);
            json_device.put("PRODUCT", android.os.Build.PRODUCT);
            json_device.put("BRAND", android.os.Build.BRAND);
            json_device.put("DISPLAY", android.os.Build.DISPLAY);
            json_device.put("CPU_ABI", android.os.Build.CPU_ABI);
            json_device.put("CPU_ABI2", android.os.Build.CPU_ABI2);
            json_device.put("UNKNOWN", android.os.Build.UNKNOWN);
            json_device.put("HARDWARE", android.os.Build.HARDWARE);
            json_device.put("ID", android.os.Build.ID);
            json_device.put("MANUFACTURER", android.os.Build.MANUFACTURER);
            json_device.put("USER", android.os.Build.USER);
            json_device.put("HOST", android.os.Build.HOST);
            json_device.put("OS_VERSION", System.getProperty("os.version"));

            // A�adimos los datos del hijo en el padre
            json.put("INFO_DEVICE", json_device);
        } catch (JSONException e) {
            c_logging.getInstance().log(c_logging.LOG_ERROR, "json INFO_DEVICE: " + e.toString());
        }

        // Creación del objeto json info_app
        try {
            // Creamos el segundo hijo
            JSONObject json_app = new JSONObject();

            // Datos del segundo hijo
            json_app.put("VERSION", ctx.getString(R.string.app_version));
            json_app.put("NAME", ctx.getString(R.string.app_name));
            json_app.put("ID_APP", ID_APP);

            // A�adimos los datos del segundo hijo al padre
            json.put("INFO_APP", json_app);
        } catch (JSONException e) {
            c_logging.getInstance().log(c_logging.LOG_ERROR, "json INFO_APP: " + e.toString());
        }

        // Creación del objeto json info_operation
        try {
            // Creamos el tercer hijo
            JSONObject json_operation = new JSONObject();

            // Recorremos el array y lo llenamos con los datos pasados como parámetros
            for (NameValuePair element : ArrayOperation) { // foreach loop
                json_operation.put(element.getName().toString(), element.getValue().toString());
            }

            // Datos del nieto
            // json_operation_params.put("USERNAME", USERNAME);
            // json_operation_params.put("PASSWORD", PASSWORD);

            // Metemos al hijo en su padre
            json.put("INFO_OPERATION", json_operation);
        } catch (JSONException e) {
            c_logging.getInstance().log(c_logging.LOG_ERROR, "json INFO_OPERATION: " + e.toString());
        }

        return json;

    }
}